﻿<html>
<head>
<title>对象object</title>
<meta charset="utf-8"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no"/>
</head>
<body>
<h1>直接创建自定义对象</h1>    
<script>
let stu={
    name:`发哥`,
    sex:`男`,
    age:25
}    
document.write(`姓名：`+stu.name+`<br>`);
document.write(`姓名：`+stu.sex+`<br>`);
document.write(`姓名：`+stu.age+`<br>`);
</script>
<hr>
还可使用数组方式对属性值进行输出 <br>
<script>
let stus={
    name:`汪洋`,
    sex:`女`,
    age:99
}
document.write(`姓名：`+stus[`name`]+`<br>`);
document.write(`姓名：`+stus[`sex`]+`<br>`);
document.write(`姓名：`+stus[`age`]+`<br>`);
</script>
<h1>通过自定义函数构建对象</h1>
<script>
function stue(name,sex,age){
    this.name=name;
    this.sex=sex;
    this.age=age;
}
let stue1=new stue(`张四`,`男`,25);
document.write(stue1.name+`<br>`);
document.write(stue1.sex+`<br>`);
document.write(stue1.age);
</script>
<hr>
输出一部电影的信息：
<script>
function move(名称,原唱,时间,风格){
    this.名称=名称;
    this.原唱=原唱;
    this.时间=时间;
    this.风格=风格;
};
let moves=new move(`我心永恒`,`席林迪翁`,`1997年12月`,`流行音乐`);
document.write(`歌曲名称：`+moves.名称+`<br>`);
document.write(`原唱`+moves.原唱+`<br>`);
document.write(`时间`+moves.时间+`<br>`);
document.write(`风格：`+moves.风格+`<br><br><br>`);

let moves2=new move(`真心英雄`,`郑智化`,`1998年1月`,`通俗歌曲`);
document.write(`歌曲名称：`+moves2.名称+`<br>`);
document.write(`原唱`+moves2.原唱+`<br>`);
document.write(`时间`+moves2.时间+`<br>`);
document.write(`风格：`+moves2.风格+`<br>`);
</script>
<hr>
在对象中可以拥有方法，还可以在构造函数中直接使用表达式来定义方法 <br>
输出演员个人简介　<br>
<script>
function actor(name,work,achivement){
    this.name=name;
    this.work=work;
    this.achivement=achivement;
    this.introduction=function(){
        document.write(`中文名：`+this.name);
        document.write(`<br>代表作品：`+this.work);
        document.write(`<br>主要成就：`+this.achivement);
    }
}
let 演员之家=new actor(`张卫健`,`《家有儿女》`,`中国知名笑星，港台三栖，男的`);
演员之家.introduction();
</script>
<hr>
定义一组学生对象，在对象中统计考试分类的方法。<br>
<script>
function stuu(数学,语文,英语,物理,化学){
    this.数学=数学;
    this.语文=语文;
    this.英语=英语;
    this.物理=物理;
    this.化学=化学;
    this.我的成绩=function(){
        document.write(`数学：`+数学);
        document.write(`<br>语文`+语文);
        document.write(`<br>英语`+英语);
        document.write(`<br>物理`+物理);
        document.write(`<br>化学`+化学);
        document.write(`<br>总分：`+(this.数学+this.语文+this.英语+this.物理+this.物理+this.化学));
    }
}
let 成绩表=new stuu(66,80,65,85,93);
成绩表.我的成绩();
</script>
<hr>
创建对象调用两组图书： <br>
<script>
function books(书名,类型,价格){
    this.书名=书名;
    this.类型=类型;
    this.价格=价格;
    this.书单=function(){
        document.write(`书名：`+this.书名+`,类型:`+this.类型+`,价格：`+this.价格);
    }
    this.书2单=function(){
        document.write(`这是本书名：`+this.书名+`,类型:`+this.类型+`,价格：`+this.价格);
    }
};
let 显示书=new books(`西游记`,`古典`,`中文最佳`,`333`);
显示书.书单();
document.write(`<br>--------------<br>`);
let 显示书2=new books(`大路朝东`,`当代`,`美国文选`,`3343`);
显示书2.书单();
document.write(`<br>--------------<br>`);
显示书2.书2单();
</script>
<hr>
使用prototype可以节省内存，避免每次分配对象 <br>
<script>
function c1(nname,ssex,agee){
    this.nname=nname;
    this.ssex=ssex;
    this.agee=agee;
}
c1.prototype.bb=function(){
    document.write(`姓名：`+this.nname+`\n性别:`+this.ssex+`\n年龄:`+this.agee);
};
let c1s=new c1(`胡小东`,`男`,33);
c1s.bb();
</script>
<hr>
创建一个圆的对象 <br>
<script>
function circled(rs){
    this.rs=rs;
}
circled.prototype.pis=3.14;
circled.prototype.圆周长=function(){
    return 2*this.pis*this.rs;
}
circled.prototype.面积=function(){
    return this.pis*this.rs*this.rs;
}
let 结好果=new circled(10); //半径
document.write(`圆的半径为：`+结好果.rs);
document.write(`<br>圆周长：`+parseInt(结好果.圆周长()));
document.write(`<br>圆面积：`+parseInt(结好果.面积()));
</script>
<hr>
应用构造函数创建一个购物车对象，向对象中添加方法，实现输出商品的功能。 <br>
<script>
function 购物车(商品名1,单价1,数量1){
    this.商品名1=商品名1;
    this.单价1=单价1;
    this.数量1=数量1;
    购物车.prototype.aff=function(){
        document.write(`<br><br>商品名：`+this.商品名1);
        document.write(`<br>单价：`+this.单价1);
        document.write(`<br>数量：`+this.数量1);
        document.write(`<br>总价：`+this.单价1*this.数量1);
    }
}
let 大润发=new 购物车(`大米`,120,32);
大润发.aff();
let 大润发2=new 购物车(`海带`,2,14);
大润发2.aff();
</script>
<hr>
应用函数构造创建一个自定义对象，生成指定行和列数的表格。 <br>
<script>
function 表之格(行好,列好,宽好,高好){
    this.行好=行好;
    this.列好=列好;
    this.宽好=宽好;
    this.高好=高好;
    表之格.prototype.gogotable=function(){
        let 表参数="";
        表参数+=(`<table width=`+this.宽好+` height=`+this.高好+` align=center border=1>`);
        let 背景值;
        for (let 数好目=0;数好目<this.行好;数好目++){
            if(数好目/2==0){
                背景值=`#ffffff`;
            }else{
                背景值=`#eeeeee`;
            }
            表参数+=(`<tr bgcolor=`+背景值+`>`);
            for(let 多少列=0;多少列<this.列好;多少列++){
                表参数+=(`<td width=50 align=center></td>`);
            }
            表参数+=(`</tr>`);
        }
        表参数+=(`</table>`);
        document.write(表参数);
    }
}
var 来来表=new 表之格(3,6,500,150);
来来表.gogotable();
</script>
<h1>通过object创建对象</h1>
<script>
let stu3=new Object();
stu3.name="王五";
stu3.sex="中性人";
stu3.age="2岁长大";
document.write(`姓名：`+stu3.name);
document.write(`<br>性别：`+stu3.sex);
document.write(`<br>年龄：`+stu3.age);
</script>
使用object定义自定义对象时，也可以定义对象的方法。 <br>
<script>
let stu4=new Object();
stu4.name="胡dd友";
stu4.sex="男";
stu4.age="45";
stu4.shh=function(){
    document.write(`姓名：`+stu4.name+`\n性别：`+stu4.sex+`\n年龄：`+stu4.age);
};
stu4.shh();
</script>
<hr>
使用object对象创建自定义对象boak,在book对象中定义方法getBookinfo(),并在方法中使用3个参数。 <br>
<script>
let boak=new Object();
boak.getBookinfo=getBookinfo;
function getBookinfo(name,type,price){
document.write(`书名：`+name+`<br>类型：`+type+`<br>价格：`+price);
}
boak.getBookinfo(`逐浪产品手册`,`科技书`,293);
</script>
<hr>
使用object对象创建一个球的对象BALL，输出类型、颜色、价格 <br>
<script>
let ball=new Object();
ball.类型=`篮球`;
ball.颜色=`红色`;
ball.价格=22;
ball.整体=function(){
    document.write(`类型：`+ball.类型+`<br>颜色：`+ball.颜色+`<br>价格：`+ball.价格);
};
ball.整体();
</script>
<hr>
使用object对象创建一个用户对象，调用方法模拟传递的用户名和密码功能，运行结果提示成功 <br>
<script>
var userss=Object();
userss.username="mr";
userss.pass="mrsoft";
userss.login=login;
function login(username,pass){
  if(userss.username!=username){
      document.write(`登录用户名错误`);
  }else if(userss.pass!=pass){
      document.write(`密码不对`);
  }else{
      document.write(`登录成功`);
  }
}
userss.login(`mr`,`mrsoft`);
</script>
<hr>
for..in语句用于某个对象的性进行循环操作，将某个对象的所有属性名称依次赋值 给同一个变量，而不需要事先知道对象属性的个数。<br>
在使用for...in语句遍历对象的属性，在输出属性值 时一定要使用数组形式，即： 对象名[属性名],而不是”对象名.属性名“形式  <br>
<script>
let ggd={user:`小月`,sex:`女`,age:23,insterest:`运动、唱歌`}; //Objec可以改为任何字符，如ggd
for(let example in ggd){
    document.write(`属性：`+example+`=`+ggd[example]+`<br>`);
}
</script>
<hr>
with语句用在访问一个对象的属性或方法时，避免重复引用指定对象名。使用with语句可以简化对象属性的调用层次。 <br>
<script>
function stt(name,sex,age){
    this.name=name;
    this.sex=sex;
    this.age=age;
}
let stt2=new stt(`周星星`,`男`,84);
with(stt2){
    document.write(`姓名：`+name+`<br>性别：`+sex+`<br>年龄:`+age);
}
</script>
<hr>
Math对象求圆 <br>
<script>
let 半径=5;
let 周长=2*Math.PI*半径;
let 面积=Math.PI*半径*半径;
document.write(`圆的半径为:`+半径);
document.write(`<br>圆的周长为:`+parseInt(周长));
document.write(`<br>圆的面积为:`+parseInt(面积));
</script>
<hr>
生成指定的位数的随机数 <br>
<form action="" name="form">
<input type="text" name="随机数">
<input type="button" value="生成随机数" onclick="ran(form.随机数.value)">
</form>
<script>
function ran(随机数){
    let jjj="";
    for(ir=0;ir<随机数;ir++){
        jjj=jjj+(Math.floor(Math.random()*10));
    }
alert(jjj);
}
</script>









</body>
</html>